/*
 * 03const修饰的指针.c
 *
 *  Created on: 2024年3月10日
 *      Author: HP
 */


int main0703(){
	const int a = 10;
	// a=100; // err
	// 通过一级指针间接修改变量的值
	int* p = &a;
	*p = 100;

	char ch1[] = "hello";
	char ch2[] = "world";
	// 指针指向内存区域不能修改，指针指向可以变
	const char* p2 = ch1;
	// *p2 = 'm'; // err
	// p2[2] = 'm'; //err
	// *(p2+2) = 'm'; //err
	p2 = ch2; // ok

	// 可以修改指针变量指向内存空间的值，不可以修改指针变量的值
	char* const p3 = ch1;
	// p3 = ch2; // err
	// p3[2] = 'm'; //ok

	// 不可以修改指针变量指向内存空间的值，也不可以修改指针变量的值
	const char* const p4 = ch1;
	// p4 = ch2; // err
	// p4[2] = 'm'; //err

	// 通过二级指针修改，所以const也是不安全的
	char** p5 = &p4;
	*p5 = ch2;
	**p5 = 'm';
	*(*p5+1) = 'n';
	printf("%s\n", p4);
	return 0;
}
